<?php
include("functions.php") ;
maakHoofding("fotowedstrijd AVNet- verwerk upload foto") ;
?>
    <body>
        <?php
            maakTitelBalk();
            menu() ;
        ?>

            <div id="textcontainer">
              <p>
        <?php
            # Hierin worden de foto's geupload. 
            $UploadMap = './upgeloade_fotos/';

            # Deze variable wordt straks gevuld met de bestandsnaam van de foto
            $FotoNaam = '';

            # Array voor messages in te bewaren.
            $Bericht = array ();

            # Toegestane extenties
            $FotoExt = array('.jpg', '.jpeg', '.gif', '.png');

            # In deze array zitten alle toegestane MIME types.
            $FotoMIME = array ('image/jpeg', 'image/pjpeg', 'image/png', 'image/x-png', 'image/gif');

            # In deze variable definieren wij de maximale grote van het bestand. Wij zetten het even op 10 mb.
            $MaxFotoSize = 10000000;

            # Controleren of de pagina zichzelf heeft aangeroepen
            if ($_SERVER['REQUEST_METHOD'] == 'POST') {
                # Als het formulier niet is verzonden of de pagina is foutief aangroepen
                if (!isset($_FILES['foto'])) {
                    # dan vullen we hier de array met een fout melding. Deze wordt later weer uitgelezen door middel van een for.
                    $Bericht[] = 'U heeft geen foto geselecteerd!';
                }

                else {
                    # Een array maken met alle waarden van de foto.
                    $Foto = $_FILES['foto'];

                    # Nu komt hetgene waar ik het daarnet overhad. Het controleren van de fouten. Dit doen we doormiddel van een switch statement.
                    switch ($Foto['error']) {

                        case UPLOAD_ERR_OK:

                            # Het uploaden is goed gegaan, maar misschien is de foto groter dan toegestaan.
                            if ($Foto['size'] > $MaxFotoSize)  {
                                $Bericht[] = 'De file is te groot. Hij mag niet groter zijn dan <b>' .$MaxFotoSize. ' kb</b>';
                            }

                            # Kijken of het bestand wel een breedte en/of hoogte heeft
                            if(@!getimagesize($_FILES['foto']['tmp_name'])) {
                                $Bericht[] = 'Deze file heeft geen breedte of hoogte. Het was vermoedelijk geen foto';
                            }

                        break;

                        case UPLOAD_ERR_INI_SIZE:

                            # De foto is groter dan toegestaan in php.ini Dit is standaard 16 mb.
                            $Bericht[] = 'De file is te groot. Hij mag niet groter zijn dan <b>' .$MaxFotoSize. ' kb</b>';

                        break;

                        case UPLOAD_ERR_PARTIAL:

                            # De foto is maar gedeeltelijk geupload. Variable $Bericht weer vullen met een foutmelding.
                            $Bericht[] = 'Er is een fout opgetreden tijdens het uploaden';

                        break;

                        case UPLOAD_ERR_NO_FILE:

                            # Er is geen bestand opgegeven om te uploaden. Array weer vullen.
                            $Bericht[] = 'U heeft geen file opgegeven om te uploaden';

                        break;

                        default:

                            # Vanget: Er zou eigenlijk geen onbekende fout mogen optreden maar het is toch goed om hier een voorziening voor te treffen
                            $Bericht[] = 'Er is een onbekende fout opgetreden';

                        break;

                    } # Het einde van de switch statement.


                    if (empty($Bericht)) {

                        # Het uploaden is goedgegaan, want de array Bericht is nog leeg. (empty)
                        # We gaan u de extensie van de file controleren en kijken of hij is toegestaan.
                        if (!in_array($Foto['type'], $FotoMIME )) {
                            # De MIME type die is opgegeven is niet toegestaan, de array bericht weer vullen met een andere foutmelding.
                            $Bericht[] = 'Deze extensie is niet toegestaan!';
                        }

                        # Extensie controleren
                        if(!in_array(strtolower(strrchr($_FILES['foto']['name'], '.')), $FotoExt))  {
                            $Bericht[] = ' Deze foto extentie is niet toegestaan';

                        }

                        # We gaan nu controleren of er al een foto bestaat met deze naam.
                        $FotoNaam = $UploadMap . $Foto['name'];

                            if (file_exists($FotoNaam)) {

                                # De naam van de foto bestaat dus al. Het mag natuurlijk niet voorkomen dat file's worden overgeschreven. Dat zou zonde zijn.
                                # De array weer vullen met een andere foutmelding. Natuurlijk mag je die helemaal aanpassen naar wat jij wilt!
                                $Bericht[] = 'Er bestaat al een foto met deze naam! Verander de naam van de foto alvorens up te loaden';
                            }
                        # we gaan nu controleren of er een beschrijving is meegegegeven
                             if (empty($_POST['beschrijving'])) {
                                $Bericht[] = 'Gelieve een beschrijving van de foto mee te geven' ;
                             }

                        # controleer of er een categorie is geselecteerd
                            if ($_POST['categorie'] == "0" ) {
                                $Bericht[] = 'Gelieve een categorie te selecteren' ;
                             }
                    }
                    
                    # als er geen fout is: verwerken van de foto
                    // eerst nog wegschrijven naar de database zonder error, daarna thumbnail maken
                    if (empty($Bericht)) {

                        # testen of de foto kan worden opgeslagen
                      if (!move_uploaded_file ($Foto['tmp_name'] , $FotoNaam)) {
                            $Bericht[] = 'Foto kan niet worden opgeslagen' ;
                      }
                      else {
                            $image = new SimpleImage() ;
                            $image->load($FotoNaam) ;
                            $image->save($FotoNaam, $image->image_type, 75) ;

                            #
                            $FotoNaam = mysql_escape_string($FotoNaam) ;
                            $beschrijving = mysql_escape_string($_POST['beschrijving']) ;
                            $categorie = mysql_escape_string( $_POST['categorie']) ;

                            # wegschrijven naar de database
                            include 'configs/config.php';
                            include 'configs/opendb.php';
                            $user = $_SERVER['PHP_AUTH_USER'] ;
                            $query = "INSERT INTO fotos (adres, beschrijving, eigenaar, categorie)
                                      VALUES ('". $FotoNaam . "', '" . $beschrijving . "', '".$user."', '" . $categorie . "')" ;
                            mysql_query($query) or $Bericht[]='Er is een fout opgetreden waardoor de gegevens niet aan de databank konden worden toegevoegd.' ;
                            include 'configs/closedb.php';


                            # wat gegegevens uitprinten as het gelukt is
                            if (empty($Bericht)) {
                                echo 'Uw foto is succesvol opgeslagen!' , "<br/>"  ;
                                echo '<img src="' . $FotoNaam . '" alt="' . $_POST['beschrijving'] . '" title="' . $_POST['beschrijving'] . '"/><br/>' ;
                                echo 'categorie: ' , $_POST['categorie'] , "<br/>" ;
                                echo 'beschrijving: ' ,$_POST['beschrijving'] , "<br/>"  ;
                            }
                      }
                     }                     
                }
                 # indien er een fout is opgetreden gaan we deze foutboodschap uitprinten
                    if (! empty($Bericht)) {
                        for ($i = 0; $i < count($Bericht); $i++) {
                            echo $Bericht[$i], "<br/>" ;
                        }
                        //nog iet voor die foto als die toch is upgeload maar niet naar de database is geschreven, van de server te verwijderen
                        unlink($FotoNaam);
                    }
            }
        ?>
        <a href='foto_upload.php'>terug naar de foto-upload pagina</a>
        </p>
        </div>
        <?php
            maakfooter();
        ?>
    </body>
</html>
